feat: adopt structured logging (log/slog) for observability#50
Merged
Conversation
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: mrhillsman The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
- Add internal/logging package with NewLogger function - Logger supports debug/info levels via verbose flag - Uses JSON output for container/OpenShift environments - Update wait package to accept and use logger - Replace fmt.Printf with structured logging in wait.go - Add tests for logging configuration - Update wait tests to use logger Signed-off-by: Melvin Hillsman <mhillsma@redhat.com>
- Initialize logger in runE and cleanupE based on verbose flag - Replace all fmt.Fprintf calls with slog calls - Use structured fields for VM names, namespaces, counts, durations - Update printSummary and printDryRun to use logger - Maintain JSON output for container environments - Pass logger to wait.WaitForAllVMsReady Signed-off-by: Melvin Hillsman <mhillsma@redhat.com>
6c03ab8 to
27aa01e
Compare
- Remove unused strings import from main.go - Update main_test.go to pass logger to wait.WaitForAllVMsReady - All tests now pass with structured logging Signed-off-by: Melvin Hillsman <mhillsma@redhat.com>
27aa01e to
0a7c6a8
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adopts Go's standard
log/slogpackage for structured logging throughout the codebase, replacingfmt.Printfandfmt.Fprintfcalls with structured JSON output optimized for containerized/OpenShift environments.Closes #8
Changes
New Components
internal/loggingpackage: ProvidesNewLogger()function with configurable log levels--verboseflag is enabledUpdated Files
cmd/virtwork/main.go:--verboseflag inrunEandcleanupEfmt.Fprintfcalls with structured loggingprintSummary()andprintDryRun()functionsinternal/wait/wait.go:WaitForVMReady()andWaitForAllVMsReady()fmt.Printfretry messages with debug-level structured logsStructured Fields
Logs now include contextual fields for filtering and analysis:
vm_name,namespace,workload,componentcpu_cores,timeout,vm_countrun_id,service_name,secret_nameerrordetails for failuresTesting
internal/loggingpackageExample Output
{"time":"2026-05-20T10:30:45Z","level":"INFO","msg":"vm created","vm_name":"virtwork-cpu-0","namespace":"virtwork","workload":"cpu"} {"time":"2026-05-20T10:31:02Z","level":"INFO","msg":"all VMs ready","vm_count":3}With --verbose:
{"time":"2026-05-20T10:30:50Z","level":"DEBUG","msg":"VMI not yet created, retrying","vm_name":"virtwork-cpu-0","namespace":"virtwork"}Benefits